package com.octopus.core.result;

import com.octopus.core.Extras;

/**
 * 页面解析结果对象
 *
 * @author yang_shoulai@hoperun.com
 * @date 2019/08/05
 */
public class Result extends Extras {

  private Object obj;

  public Result() {}

  /**
   * 静态方法生成Result
   *
   * @return Result
   */
  public static Result me() {
    return new Result();
  }

  /**
   * 存取默认结果对象<br>
   * 方便依次全部取出
   *
   * @param obj 结果对象
   * @return 当前对象
   */
  public Result obj(Object obj) {
    this.obj = obj;
    return this;
  }

  /**
   * 获取默认存储对象
   *
   * @param <T> 取出类型
   * @return 存储对象
   */
  @SuppressWarnings("unchecked")
  public <T> T obj() {
    return (T) this.obj;
  }

  @Override
  public String toString() {
    return String.format("Result[obj = %s, extras = %s]", obj, super.toString());
  }

  /**
   * 判断结果对象是否为空
   *
   * @return true如果obj为null并且extras为空
   */
  @Override
  public boolean isEmpty() {
    return this.obj == null && super.isEmpty();
  }
}
